SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO
CREATE PROCEDURE [dbo].[SP_TTACTU_PAGO_Q01]      
/*--------------------------------------------*/      
/*---Empresa  : OFISIS S.A.     --*/      
/*---Cliente  : OFISIS S.A.     --*/      
/*---Sistema  : Tesoreria     --*/      
/*---M©dulo   : Empresa      --*/      
/*---Programa : Actualiza pago documentos   --*/      
/*---Script   : tcmovi_banc.sql    --*/      
/*---Nombre SP: SP_TTACTU_PAGO_Q01   --*/      
/*---Desarrollado por : Reynaldo Menacho L --*/      
/*---- Fecha Creacion: 06/05/2004   --*/      
/*---Base Datos   : Microsoft Sql Server --*/      
/*---Versi©n  : 8.00      --*/      
/*---Invoca a SP  :       --*/      
/*--------------------------------------------*/      
/*--------------------------------------------*/      
/*---Modificado 1 por :Carlos Marquez E  --*/      
/*---Fecha ModIficaci,n   :29/08/2005  --*/       
/*---Detalle ModIficaci,n :Caso devolucion de Anticipos --*/      
/*--------------------------------------------*/      
/*--------------------------------------------*/      
/*---- Comentarios :      --*/      
/*---- Drop Procedure  SP_TTACTU_PAGO_Q01 --*/      
/*---- Grant ALL on  to public    --*/      
/*----          --*/      
/*--------------------------------------------*/      
/*---- Grant Execute On SP_TTACTU_PAGO_Q01  to Public   ---*/      
/*----  Declare @VDFE_DOCU TD_DT_001      
  Exec SP_TTACTU_PAGO_Q01  '01', 'P', '10080857971', 'FAC', '0002-0000005989', 'E', @VDFE_DOCU OUTPUT      
  Select @VDFE_DOCU --*/      
/*--------------------------------------------*/      
@ISCO_EMPR TD_VC_002,      
@ISTI_ENTI TD_VC_001,      
@ISCO_ENTI  TD_VC_020,      
@ISTI_DOCU TD_VC_003,      
@ISNU_DOCU TD_VC_020,      
@INIM_PAGO TD_NU_016_004,        
@ISCO_ESTA_NUEV TD_VC_003,        
@ISCO_USUA_MODI TD_VC_008,        
@ISST_CIER_DOCU TD_VC_001      
 As      
Declare       
@VSCO_ESTA_ORIG TD_VC_003,      
@VNNU_SECU TD_IN_001,      
@VSCO_TIAU_CLIE TD_VC_001,      
@VSCO_TIAU_PROV TD_VC_001,      
@VSTI_DOCU_LETR TD_VC_003,      
@VSTI_DOCU_ANTC TD_VC_003      
       
      
 Exec SP_TTDOCU_CNTB_Q02  6, @VSTI_DOCU_LETR  OUTPUT         
 Exec SP_TTDOCU_CNTB_Q02 17, @VSTI_DOCU_ANTC  OUTPUT        
       
       
 Select @VSCO_TIAU_CLIE = CO_TIAU_CLIE, @VSCO_TIAU_PROV = CO_TIAU_PROV      
 From TMPARA_TESO      
 Where CO_EMPR = @ISCO_EMPR      
       
 If @INIM_PAGO > 0        
  -- Si es un pago se busca el estado actual del documento        
  Exec SP_TTESTA_ORIG_Q02 @ISCO_EMPR, @ISTI_ENTI, @ISCO_ENTI, @ISTI_DOCU, @ISNU_DOCU, @VSCO_ESTA_ORIG output        
 Else        
  -- Si es una anulacion se busca el estado anterior del documento        
  Exec SP_TTESTA_ORIG_Q01 @ISCO_EMPR, @ISTI_ENTI, @ISCO_ENTI, @ISTI_DOCU, @ISNU_DOCU, @VSCO_ESTA_ORIG output        
       
 If @ISST_CIER_DOCU = 'N'        
  Select @ISCO_ESTA_NUEV = @VSCO_ESTA_ORIG        
      
 Begin Tran SP_TTACTU_PAGO_Q01      
       
 If @ISTI_ENTI = @VSCO_TIAU_CLIE      
 Begin      
  If @ISTI_DOCU != @VSTI_DOCU_LETR      
   Update TMDOCU_CLIE      
   Set IM_PAGA = Isnull(IM_PAGA,0) + Round(@INIM_PAGO, 2), CO_ESTA_DOCU = @ISCO_ESTA_NUEV,      
   FE_USUA_MODI = Getdate(), CO_USUA_MODI = @ISCO_USUA_MODI         
   Where CO_EMPR = @ISCO_EMPR      
   And CO_CLIE = @ISCO_ENTI      
   And CO_TIPO_DOCU = @ISTI_DOCU      
   And NU_DOCU_CLIE = @ISNU_DOCU      
  Else      
   Update TMLETR_CLIE      
   Set IM_PAGA = Isnull(IM_PAGA,0) + Round(@INIM_PAGO, 2), CO_ESTA_DOCU = @ISCO_ESTA_NUEV,      
   FE_USUA_MODI = Getdate(), CO_USUA_MODI = @ISCO_USUA_MODI         
   Where CO_EMPR = @ISCO_EMPR      
   And CO_CLIE = @ISCO_ENTI      
   And NU_LETR_CLIE = @ISNU_DOCU      
        
  If @@error <> 0      
  Begin      
   Rollback tran SP_TTACTU_PAGO_Q01        
   Return      
  End      
       
  Select @VNNU_SECU = ISNULL(Max(NU_SECU),0) + 1      
  From   TDKARD_DOCU        
  Where  CO_EMPR = @ISCO_EMPR      
        
  Insert Into TDKARD_DOCU (CO_EMPR, NU_SECU,CO_TIPO_DOCU, NU_DOCU_CLIE, CO_CLIE, CO_ESTA_ACTU,      
  CO_ESTA_DOCU, NU_CORR_MODI, CO_USUA_CREA, FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI )      
  Values ( @ISCO_EMPR, @VNNU_SECU , @ISTI_DOCU, @ISNU_DOCU, @ISCO_ENTI,      
  @ISCO_ESTA_NUEV,  @VSCO_ESTA_ORIG, @VNNU_SECU, @ISCO_USUA_MODI, GETDATE(), @ISCO_USUA_MODI, GETDATE())        
       
  If @@error <> 0      
  Begin      
   Rollback tran SP_TTACTU_PAGO_Q01        
   Return      
  End      
       
 End      
 Else      
 Begin      
  If @ISTI_DOCU = @VSTI_DOCU_LETR      
   Update TMLETR_PROV      
   Set IM_PAGA = Isnull(IM_PAGA,0) + Round(@INIM_PAGO, 2), CO_ESTA_DOCU = @ISCO_ESTA_NUEV,      
   FE_USUA_MODI = Getdate(), CO_USUA_MODI = @ISCO_USUA_MODI         
   Where CO_EMPR = @ISCO_EMPR      
   And CO_PROV = @ISCO_ENTI      
   And NU_LETR_PROV = @ISNU_DOCU      
    
  /* else if @ISTI_DOCU = @VSTI_DOCU_ANTC      
        
   Update TMDOCU_PROV      
   Set IM_PAGA = Case IM_PAGA when 0 Then Isnull(IM_PAGA,0) + Round(@INIM_PAGO, 2) Else IM_PAGA End,       
   IM_TOTA = Case IM_PAGA when 0 Then IM_TOTA Else Isnull(IM_TOTA,0) - Round(@INIM_PAGO, 2) End,       
   CO_ESTA_DOCU = @ISCO_ESTA_NUEV,      
   FE_USUA_MODI = Getdate(), CO_USUA_MODI = @ISCO_USUA_MODI         
   Where CO_EMPR = @ISCO_EMPR      
   And CO_PROV = @ISCO_ENTI      
   And CO_TIPO_DOCU = @ISTI_DOCU      
   And NU_DOCU_PROV = @ISNU_DOCU  */    
        
  Else      
        
   Update TMDOCU_PROV      
   Set IM_PAGA = Isnull(IM_PAGA,0) + Round(@INIM_PAGO, 2), CO_ESTA_DOCU = @ISCO_ESTA_NUEV,      
   FE_USUA_MODI = Getdate(), CO_USUA_MODI = @ISCO_USUA_MODI         
   Where CO_EMPR = @ISCO_EMPR      
   And CO_PROV = @ISCO_ENTI      
   And CO_TIPO_DOCU = @ISTI_DOCU      
   And NU_DOCU_PROV = @ISNU_DOCU      
        
  If @@error <> 0      
  Begin      
   Rollback tran SP_TTACTU_PAGO_Q01        
   Return      
  End      
       
  Select @VNNU_SECU = ISNULL(Max(NU_SECU),0) + 1      
  From   TDKARD_DOCP      
  Where  CO_EMPR = @ISCO_EMPR      
        
  --   If @INIM_PAGO > 0 -- Si es un pago       
  Insert Into TDKARD_DOCP (CO_EMPR, NU_SECU,CO_TIPO_DOCU, NU_DOCU_PROV, CO_PROV, CO_ESTA_ACTU,      
  CO_ESTA_DOCU, CO_USUA_CREA, FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI )      
  Values ( @ISCO_EMPR, @VNNU_SECU , @ISTI_DOCU, @ISNU_DOCU, @ISCO_ENTI,      
  @ISCO_ESTA_NUEV, @VSCO_ESTA_ORIG, @ISCO_USUA_MODI, GETDATE(), @ISCO_USUA_MODI, GETDATE())        
  If @@error <> 0      
  Begin      
   Rollback tran SP_TTACTU_PAGO_Q01        
   Return      
  End      
       
 End      
      
 Commit Tran SP_TTACTU_PAGO_Q01        
/* ---------------------------- Fin -----------------------------------*/


GO
